package com.yupi.mianshiya.common;

import java.io.Serializable;

import lombok.Data;

/**
 * 通用返回类
 * 这是一个通用的API响应封装类，用于统一项目中所有接口的返回格式
 *
 * @param <T> 使用泛型，使返回的数据字段data可以支持任意类型
 * @author <a href="https://gitee.com/wu-qi-777/exam-solving-system">吴奇777</a>
 */
@Data // Lombok注解，自动生成getter/setter、toString等方法
public class BaseResponse<T> implements Serializable {
    // 状态码
    private int code;
    // 响应数据
    private T data;
    // 提示信息
    private String message;

    // 全参数构造方法
    public BaseResponse(int code, T data, String message) {
        this.code = code;
        this.data = data;
        this.message = message;
    }

    // 省略message的构造方法
    public BaseResponse(int code, T data) {
        this(code, data, "");
    }

    // 基于ErrorCode的构造方法
    public BaseResponse(ErrorCode errorCode) {
        this(errorCode.getCode(), null, errorCode.getMessage());
    }
}
